package com.zipeng.system.permission.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data
@TableName(value = "sys_permission")
public class Permission implements Serializable {
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 父权限ID
     */
    @Min(value = 0, message = "上级菜单id非法")
    private Long parentId;
    /**
     * 父权限名称
     */
    @NotBlank(message = "上级菜单名称为空")
    private String parentName;
    /**
     * 权限名称
     */
    @NotBlank(message = "权限名称为空")
    private String label;
    /**
     * 标识符
     */
    @NotBlank(message = "权限标识为空")
    private String code;
    /**
     * 路由地址
     */
    private String path;
    /**
     * 路由名称
     */
    private String name;
    /**
     * 前端组件的相对路径
     */
    private String url;
    /**
     * 序号
     */
    @Min(value = 0, message = "序号非法")
    private Integer orderNum;
    /**
     * 权限类型
     */
    @Min(value = 0, message = "权限类型非法")
    @Max(value = 2, message = "权限类型非法")
    private String type;
    /**
     * 权限图标
     */
    private String icon;
    /**
     * 备注
     */
    private String remark;
    private Date createTime;
    private Date updateTime;
    private Integer isHome;
    //不是数据库的字段需要排除
    @TableField(exist = false)
    private List<Permission> children = new ArrayList<>();
}